Network traffic has become increasingly important as applications migrate to cloud-based services. Users seek high throughput and Internet Service Providers (ISPs) typically sell service based on download and upload speeds. Poor quality can occur when congestion arises at bottlenecks, such as where traffic transitions from higher-speed to lower-speed networks. Network buffers are commonly used to buffer packets waiting at such bottlenecks, but buffers can introduce delays that increase latencies and jitter. When buffers fill to capacity, subsequent arriving packets may be dropped and cause packet loss. The term “buffer bloat” is sometimes used to refer to these problems that arise from excessive buffering of packets.
Traffic shaping methods to limit the rate of traffic before it reaches these buffers have become commonly available, but such existing methods require identifying and configuring a bandwidth limit to the rate of traffic. If the limit is set too high, buffer bloat and poor quality may result. If the limit is set too low, throughput may be too low.